/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gpstracking.BL;

import java.util.ArrayList;
import java.util.List;

import com.gpstracking.BE.Area;
import com.gpstracking.BE.Punto;
import com.gpstracking.BE.Usuario;
import com.gpstracking.DA.AreaDA;
import com.gpstracking.DA.PuntoDA;
import com.gpstracking.Utils.Geometry.Point;

/**
 *
 * @author jmj
 */
public class AreaBL {
    public boolean registrar( String nombre, String descripcion, String color, List<Point> puntos, Usuario usuario  ){
        try{
	        Area area = new Area();
	        area.setNombre(nombre);
	        area.setDescripcion(descripcion);
	        area.setColor(color);
	        area.setUsuario(usuario);
	        List<Punto> Puntos = new ArrayList<Punto>();
	        
	        for( Point punto : puntos ){
	            Punto tmp =  new Punto();
	            tmp.setArea(area);
	            tmp.setLatitud(punto.x);
	            tmp.setLongitud(punto.y);
	            tmp.setNombre( nombre );
	            
	            Puntos.add( tmp );
	        }
	        return AreaDA.save( area, Puntos );
        }catch( Exception ex){
        	ex.printStackTrace();
        		return false;
        	
        }
        
    }
    
    public List<Area> listarAreas(Usuario user){
    	return AreaDA.getActivas(user);
    }

	public Area findById(int id, Usuario user ) {
		return AreaDA.get(id, user );
	}

	public boolean modificar(int idArea, String nombre, String descripcion,
			String color, List<Point> puntos, Usuario usuario) {
		
		try{
	        Area area = AreaDA.get(idArea , usuario );
	        area.setNombre(nombre);
	        area.setDescripcion(descripcion);
	        area.setColor(color);
	        area.setUsuario(usuario);
	        
	        if ( !PuntoDA.eliminar( idArea ) ) return false;
	        
	        List<Punto> Puntos = new ArrayList<Punto>();
	        
	        for( Point punto : puntos ){
	            Punto tmp =  new Punto();
	            tmp.setArea(area);
	            tmp.setLatitud(punto.x);
	            tmp.setLongitud(punto.y);
	            tmp.setNombre( nombre );
	            
	            Puntos.add( tmp );
	        }
	        return AreaDA.save( area, Puntos );
        }catch( Exception ex){
        	ex.printStackTrace();
        		return false;
        	
        }
	}
    
    
}
